Introduction

Marie-Pierre Etienne

ENSAI - CREST

https://marieetienne.github.io/MAF

2025-10-09

Un exemple pour commencer

Où l’on commence par parler de manchots

From the palmerpenguins package, data courtesy of Dr. Kristen Gorman and the Palmer Station, Antarctica LTER.

library(palmerpenguins)
data(penguins)
head(penguins, n= 10)
# A tibble: 10 × 8
   species island    bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
   <fct>   <fct>              <dbl>         <dbl>             <int>       <int>
 1 Adelie  Torgersen           39.1          18.7               181        3750
 2 Adelie  Torgersen           39.5          17.4               186        3800
 3 Adelie  Torgersen           40.3          18                 195        3250
 4 Adelie  Torgersen           NA            NA                  NA          NA
 5 Adelie  Torgersen           36.7          19.3               193        3450
 6 Adelie  Torgersen           39.3          20.6               190        3650
 7 Adelie  Torgersen           38.9          17.8               181        3625
 8 Adelie  Torgersen           39.2          19.6               195        4675
 9 Adelie  Torgersen           34.1          18.1               193        3475
10 Adelie  Torgersen           42            20.2               190        4250
# ℹ 2 more variables: sex <fct>, year <int>
penguins <- penguins %>% na.omit() %>% mutate(year=as.factor(year))

Artwork by @allison_horst

Point de vue science des données

  • Comment représenter ces données en perdant le moins d’information possible? Visualisation
  • Toutes les variables sont-elles utiles ? Compression
  • Peut-on mettre en évidence des liens entre variables ? Compression
  • Peut-on mettre en évidence des liens entre individus ? Compression

Point de vue biologique

  • Quelles sont les différences morpholgiques entre espèces, entre sexe et entre les îles ?
  • Existe-t-il des relations morphométriques ?

Représenter c’est déjà comprendre

penguins %>%
  select(species, body_mass_g, ends_with("_mm")) %>% 
  GGally::ggpairs(aes(color = species),
          columns = c("flipper_length_mm", "body_mass_g", 
                      "bill_length_mm", "bill_depth_mm")) +
  scale_colour_manual(values = c("darkorange","purple","cyan4")) +
  scale_fill_manual(values = c("darkorange","purple","cyan4"))

Projection sur un espace à deux dimensions

Le mensonge de la projection

En * Trouvant une (ou plusieurs) représentations en 2 dimensions la plus fidèle possible, * Faisant apparaître les liens plus complexes entre variables (\(X_3 = X_1 + X_2\)) * étant capable d’identifier les individus qui se ressemblent globalement

Les données

Mise en forme des données

Toutes les méthodes d’analyse factorielle organisent les données dans un tableau composé de n individus (lignes) et de p colonnes (colonnes).

Une ligne regroupe toutes les caractéristiques d’un individu.

  • Si une caractéristique est quantitative, alors on note dans une colonne la valeur mesurée sur l’individu.
  • Si une caractéristique est qualitative, alors on utilise classiquement la représentation one hot encoding, qui consiste à représenter cette caractéristique qualitative sur autant de colonnes que de modalités et attribuer un \(1\) dans la colonne correspondant à la modalité de l’individu et 0 aux autres.

Données disponibles dans le package palmerpenguins mises à disposition par le Dr. Kristen Gorman et the Palmer Station, Antarctica LTER.

On a mesuré les caractéristiques morphologiques de divers manchots :

Les 3 premières lignes (parmi 333 )

# A tibble: 3 × 8
  species island    bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
  <fct>   <fct>              <dbl>         <dbl>             <int>       <int>
1 Adelie  Torgersen           39.1          18.7               181        3750
2 Adelie  Torgersen           39.5          17.4               186        3800
3 Adelie  Torgersen           40.3          18                 195        3250
# ℹ 2 more variables: sex <fct>, year <fct>
  • species : 3 espèces possibles (Adelie, Chinstrap, Gentoo)

  • island : l’île sur laquelle le mancho a été observé (Biscoe, Dream, Torgersen)

  • bill_length_mm : la longueur du bec,

  • bill_depth_mm : l’épaisseur du bec,

  • flipper_length_mm : la longueur de la nageoire,

  • body_mass_g : le poids du corps.

  • sex : le sexe du manchot (male,female)

  • year : l’année de l’observation

Mise en forme des données

Dans la suite on va noter \({\boldsymbol{X}}\) la matrice des données, \({\boldsymbol{X}}\in {\mathbb{R}}^{n\times p}\).

\(x_{\class{alea}{i}\class{orange}{j}}\) est la valeur de la variable \(\class{orange}{j}\) mesurée pour l’individu \(\class{alea}{i}.\)

\[{\boldsymbol{X}}= \overset{\color{orange}{\begin{matrix}var_1& \ldots \ & \ \ldots \ &\ \ldots\ & \ var_p \end{matrix}}}{\begin{pmatrix} x_{\class{alea}{1}}^{\class{orange}{1}} & \ldots & \ldots &\ldots & x_{\class{alea}{1}}^{\class{orange}{p}}\\ \vdots & & & &\vdots \\ & & x_{\class{alea}{i}}^{\class{orange}{j}} & & \\ \vdots & & & & \vdots \\ x_{\class{alea}{n}}^{\class{orange}{1}} & & & & \ldots x_{\class{alea}{n}}^{\class{orange}{p}}\\ \end{pmatrix}}\]

Ecrire les 2 premières lignes de \(\Xbf\) pour l’exemple des manchots

Comment visualiser au mieux ces données pour faire apparaître les liens entre variables et identifier des resemblances entre individus ?

Voir c’est comprendre : comment représenter l’information contenue dans ce tableau ?

Idée 1 : on représente les liens des variables 2 à 2 – Focus sur les données quantitatives

Voir c’est comprendre : comment représenter l’information contenue dans ce tableau ?

Idée 1 : dangereuse

Voir c’est comprendre : comment représenter l’information contenue dans ce tableau ?

Objectifs

  • Quantifier la quantité d’information disponible ou perdue par une représentation : (01_inertie.html)[Cours sur l’inertie]

Pour ensuite

  • Représenter sans perdre trop d’information,
  • Comprendre quelles sont les informations redondantes (variables liées),
  • Idéalement des individus éloignés dans le nuage initial, restent éloignés dans la représentation

Deux points de vue complémentaires

Le nuage des individus \(C^n\)

On peut considérer qu’un individu \(i\) est un vecteur \(\class{alea}{\boldsymbol{x}_{i}}\) dans un espace de dimension \(p\). Par convention tous les vecteurs sont des vecteurs colonnes, donc on peut écrire

\[{\boldsymbol{X}}=\begin{pmatrix} \class{alea}{\boldsymbol{x}_{1}}^\top\\ \vdots \\ \class{alea}{\boldsymbol{x}_{n}}^\top\\ \end{pmatrix},\]

L’ensemble des \(n\) vecteurs forme le nuage des individus (ce qu’on représente classiquement).

Le nuage des variables \(C^p\)

On peut considérer qu’une variable \(j\) est un vecteur \(\class{orange}{\boldsymbol{x}^{j}}\) dans un espace de dimension \(n\) et on peut écrire

\[{\boldsymbol{X}}=\begin{pmatrix} \class{orange}{\boldsymbol{x}^{1}} & \ldots & \class{orange}{\boldsymbol{x}^{p}} \end{pmatrix},\]

L’ensemble des \(p\) vecteurs forme le nuage des variables.

Bien sûr les deux nuages sont intimement liés

Un aperçu du type de données

Comprendre les relations entre des variables toutes quantitatives.

Example

Quels sont les liens entre les différentes variables morphométriques ?

X_pca <- penguins %>%select(where(is.numeric)) 
head(X_pca)
# A tibble: 6 × 4
  bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
           <dbl>         <dbl>             <int>       <int>
1           39.1          18.7               181        3750
2           39.5          17.4               186        3800
3           40.3          18                 195        3250
4           36.7          19.3               193        3450
5           39.3          20.6               190        3650
6           38.9          17.8               181        3625

\[\Xbf \in \R^{n\times d}; \quad \Xbf = \begin{pmatrix} x_{1,1} & \ldots & x_{1,p} \\ \vdots & &\vdots \\ x_{n,1} & \ldots & x_{n,p} \\ \end{pmatrix}. \]

Comprendre les combinaisons de variables quantitatives qui expliquent les groupes, ou comment visualiser au mieux les différences entre les groupes.

Example Comment visualiser au mieux les différences morpohologiques entre les espèces ?

X_afd <- penguins %>% select(-island, -sex, -year) 
head(X_afd)
# A tibble: 6 × 5
  species bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
  <fct>            <dbl>         <dbl>             <int>       <int>
1 Adelie            39.1          18.7               181        3750
2 Adelie            39.5          17.4               186        3800
3 Adelie            40.3          18                 195        3250
4 Adelie            36.7          19.3               193        3450
5 Adelie            39.3          20.6               190        3650
6 Adelie            38.9          17.8               181        3625

\[ \Xbf = \begin{pmatrix} \class{rouge}{y_1} & x_{1,1} & \ldots & x_{1,p} \\ \vdots & &\vdots \\ \class{rouge}{y_n} & x_{n,1} & \ldots & x_{n,p} \\ \end{pmatrix}, \quad x_{ij}\in\R,\  g_i \in \mathcal{G} =\left \lbrace g_1, \ldots, g_G\right \rbrace. \]

On souhaite étudier les liens entre deux variables qualitatives.

Example

Comment la répartition entre espèce diffère entre les îles.

X_acm <- penguins %>%select(species, island) 
head(X_acm)
# A tibble: 6 × 2
  species island   
  <fct>   <fct>    
1 Adelie  Torgersen
2 Adelie  Torgersen
3 Adelie  Torgersen
4 Adelie  Torgersen
5 Adelie  Torgersen
6 Adelie  Torgersen

\[\Xbf = \begin{pmatrix} \class{bleu}{a_1} & \class{orange}{b_1} \\ \class{bleu}{\vdots} &\class{orange}{\vdots} \\ \class{bleu}{a_n} & \class{orange}{b_n} \\ \end{pmatrix}, \quad a_{i}\in \mathcal{A}, \ \#\mathcal{A}= p,\quad b_{i}\in \mathcal{B}, \ \#\mathcal{B}= q. \]

Organisation du cours

  • Ces méthodes ont beaucoup de points communs
  • Comprendre finement l’ACP permet de bien comprendre toutes les extensions suivantes
  • La mise en oeuvre requiert un peu de pratique car il faut faire des choix avisés.

Pour finir

Objectifs de ce cours

Découvrir des méthodes permettant de

  • Trouver une (ou plusieurs) représentations en 2 dimensions la plus fidèle possible,
  • Faire apparaître les liens entre les différentes variables,
  • Identifier les individus qui se ressemblent.

Les ingrédients

  • un peu de géométrie et d’algèbre linéaire,
  • une mesure de la quantité d’information présente dans un jeu de données,
  • un bon esprit pratique pour bien poser le problème au départ
  • des données bien rangées dans un tableau \(\Xbf\)
    • une ligne \(i\) correspond à un individu
    • une colonne \(j\) à une variable \(X_{ij}\) la valeur de la variable \(j\) mesurée sur l’individu \(i\).

Plan du cours

  • Quantifier l’information
  • Analyse en composantes principales
    • Un exemple d’ACP
    • Comprendre les mécanismes derrière l’ACP (notion d’inertie, distance entre individus, changement de repères, la correlation comme un cosinus)
  • Analyse Factorielle multiple AFM : une extension de l’ACP
  • Analyse Factorielle Discriminante : AFD
  • Analyse Factorielle des Correspondances : AFC
  • Analyse des Correspondances multiples : ACM